let arr = [2, 5, 3, 7, 6, 4, 21, 13, 1]
function quickSort (arr, begin, end) {
  // 边界判断
  if (begin >= end) return
  let i = begin,
    j = end,
    temp = arr[begin]
  // 双循环
  while (i < j) {
    while (i < j && arr[j] > temp) {
      j--
    }
    arr[i] = arr[j]
    while (i < j && arr[i] < temp) {
      i++
    }
    arr[j] = arr[i]
  }
  arr[i] = temp
  // 此时位置i前面的全是小于temp的数, i后面的全是大于temp的数
  // 利用递归的方式继续排序
  quickSort(arr, begin, i - 1)
  quickSort(arr, i + 1, end)
}

quickSort(arr, 0, arr.length - 1)
console.log(arr)